package com.xcyy.zjdxmjk.zjdxmjk.controller;

import com.xcyy.zjdxmjk.zjdxmjk.VO.Jdzb2VO;
import com.xcyy.zjdxmjk.zjdxmjk.VO.JdzbVO;
import com.xcyy.zjdxmjk.zjdxmjk.VO.ResultVO;
import com.xcyy.zjdxmjk.zjdxmjk.common.ResultVOUtil;
import com.xcyy.zjdxmjk.zjdxmjk.entity.Town;
import com.xcyy.zjdxmjk.zjdxmjk.service.HouseService;
import com.xcyy.zjdxmjk.zjdxmjk.service.TownService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@RestController
public class JdzbController {

    @Autowired
    private TownService townService;
    @Autowired
    private HouseService houseService;

    @PostMapping("/tongjidept")
    private ResultVO tongjidept() {

        //查询所有的部门
        List<Object> objects = townService.countDept();
        List<JdzbVO> jdzbVOS = new ArrayList<>();
        for (Object o : objects) {
            JdzbVO jdzbVO = new JdzbVO();
            jdzbVO.setDept((String) (((Object[]) o)[0]));
            jdzbVO.setZs(Integer.parseInt(((BigDecimal) ((Object[]) o)[1]).toString()) + Integer.parseInt(((BigDecimal) ((Object[]) o)[2]).toString()));
            List<String> codes = townService.countDeptCode(jdzbVO.getDept());
            List<Object> os = houseService.findByDept(codes);
            for (Object o1 : os) {
                if ((Integer) (((Object[]) o1)[0]) == 0) {
                    jdzbVO.setQsdcwcs(Integer.parseInt(((BigDecimal) ((Object[]) o1)[1]).toString()));
                } else if ((Integer) (((Object[]) o1)[0]) == 1) {
                    jdzbVO.setBdcclwcs(Integer.parseInt(((BigDecimal) ((Object[]) o1)[1]).toString()));
                }
            }
            jdzbVOS.add(jdzbVO);
        }

        return ResultVOUtil.success(jdzbVOS);
    }

    @PostMapping("/tongjideptbynameandtype")
    private ResultVO tongjiDeptByNameAndType(String name){

        //TODO
        List<Town> towns=townService.findByDept(name);
        List<Jdzb2VO> jdzb2VOS=new ArrayList<>();
        Jdzb2VO jdzb2VO;
        for (Town town:towns){
            jdzb2VO=new Jdzb2VO();
            jdzb2VO.setTown(town.getName());
            jdzb2VO.setZs(town.getJsydCount()+town.getZjdCount());
            List<Object> os=houseService.findByDeptAndStage(town.getCode());
            for(Object o:os){
                if (Integer.parseInt((((Object[])o)[1]).toString())==0){
                    jdzb2VO.setQsdcwcs(Integer.parseInt(((BigDecimal) ((Object[])o)[2]).toString()));
                }else if(Integer.parseInt((((Object[])o)[1]).toString())==1){
                    jdzb2VO.setBdcclwcs(Integer.parseInt(((BigDecimal) ((Object[])o)[2]).toString()));
                }
            }
            jdzb2VOS.add(jdzb2VO);
        }

        return ResultVOUtil.success(jdzb2VOS);
    }
}
